# Python 异常处理
'''
什么是异常
捕获异常语法
异常类型
异常处理
'''

# 什么是异常？
'''
顾名思义，异常就是程序因为某种原因无法正常工作了，比如缩进错误、缺少软件包、环境错误、连接超时等都会引发异常。
一个键壮的程序应该把所有能预知的异常都应该做相应的处理，保障程序产期运行。
'''


# 捕获异常语法
'''
语法:
try:
    <代码块>
except[异常类型]:
    <发生异常时执行的代码块>

如果在执行 try 块里的业务逻辑代码时出现异常，系统会自动生成一个异常对象，该异常对象被提交给 Python 解释器，这个过程被称为引发异常。
当 Python 解释器收到异常对象时，会寻找能处理该异常对象的 except 块，如果找到合适的 except 块，则把该异常对象交给该 Except 块处理，
这个过程被称为捕获异常。如果 Python 解释器找不到捕获异常的 except 块，则允许时环境终止，Python 解释器也将退出。
'''



# 常见异常类型
'''
异常类型                     用途
SyntaxError                语法错误
IndentationError           缩进错误
TypeError                  对象类型于要求不符合
ImportError                模块或包导入错误；一般路径或名称错误
KeyError                   字典里面不存在的键
NameError                  变量不存在
IndexError                 下标超出序列范围
IOError                    输入/输出异常；一般是无法打开文件
AttributeError             对象里没有属性
KeyboardIntrrupt           键盘接受到Ctrl+C
Exception                  通用的异常类型；一般会捕捉所有异常
UnicodeEncodeError         编码错误
'''

try:
    n = '3' + 2
    print(n)
except TypeError:        #对象类型于要求不符合
    print("异常后执行的代码")


try:
    import xxxx
except ImportError:      #模块或包导入错误；一般路径或名称错误
    print("前方代码出现异常，请查看")


n1 = '2'
n2 = 2
try:
    n = n1 + n2
#except Exception:       #通用的异常类型；一般会捕捉所有异常
except Exception as e:   #错误信息定义为一个变量 e
    print("错误: %s" %e)  #打印错误信息，并执行后面的代码
    n = int(2) + int(n2)
    print(n)
    print("发生代码异常后执行的代码")

# 异常应用场景
'''
1.兼容性的处理
2.明确的要求
3.上面表达式有已知类的错误，用except备选处理
'''

try:
    f = open('computer.txt')
    f.read()
except Exception as c:
    print("错误:%s 文件不存在! 请查看。。" %c)
